Data-plane applications are responsible for processing and forwarding packets in a computer network. Data-plane applications often rely on large-scale multi-core computing systems employing a non-uniform memory access (NUMA) architecture. A computer system employing a NUMA architecture generally includes one or more sockets. Each socket includes one or more cores (i.e., processors or central processing units). In a NUMA architecture, memory is distributively located across the sockets. As such, memory access time depends on memory location relative to a processor/socket. In particular, in a NUMA architecture, a processor can access its own local memory faster than non-local memory (i.e., memory located on another socket). Accordingly, local memory access may provide an improvement in performance over remote memory access.
Existing frameworks for developing packet forwarding applications usually require detailed knowledge about the hardware and the environment on the application side. As a result, developing and configuring NUMA aware application code becomes complex and environment specific. Moreover, in a virtualized environment, physical NUMA topology is usually not exposed to the operating system (OS) running in the virtual machine.